package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.RefPayInfo;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * RefPayInfoMapper class
 *
 * @author wxr
 * @date 2019/7/1
 */
@Repository
public interface RefPayInfoMapper extends BaseMapper<RefPayInfo> {
    int getDjCountByReqId(String reqId);

    /**
     * 根据退款ID查询新增、验证的凭证列表
     *
     * @param reqId
     * @return
     */
    List<RefPayInfo> getListByReqId(String reqId);

    List<RefPayInfo> getListByReqIdNot(String id);

    /**
     * 打印凭证支付列表
     */
    List<RefPayInfo> getPayList(@Param("reqId") String reqId, @Param("accNoState") String accNoState, @Param("fuzzy") String fuzzy);

    /**
     * 修改有效日期
     */
    int changeDate(@Param("vaildDate") String vaildDate, @Param("id") String id);

    /**
     * 通过payinfo的id获取ref的id
     *
     * @param id
     * @return
     */
    String selectReqId(String id);

    /**
     * 查询该业务下是否有冻结和和新建的业务
     *
     * @param reqId
     * @param accNoState
     * @return
     */
    int selectAccNoStateByReqid(@Param("reqId") String reqId, @Param("accNoState") String accNoState);

    int updateAccNoStateByReqid(@Param("accNoState") String accNoStat, @Param("id") String id);

    /**
     * 支付凭证
     */
    List<RefPayInfo> selectPayMessage(RefPayInfo refPayInfo);

    /**
     * 支付凭证模糊查询
     */
    List<RefPayInfo> selectPayMessageFuzzy(@Param("id") String id, @Param("fuzzy") String fuzzy);

    /**
     * 凭证撤销冻结
     *
     * @param accNoState
     * @param id
     * @return
     */
    int updateAccNoStateById(@Param("accNoState") String accNoState, @Param("id") String id);

    /**
     * 根据id查询凭证信息
     *
     * @param reqId
     * @return
     */
    List<RefPayInfo> getPayListToBatchRefByReqId(@Param("reqId") String reqId, @Param("fuzzy") String fuzzy);

    /**
     * 根据reqId查询新建、冻结的总条数
     *
     * @param reqId
     * @return
     */
    int getCountByReqId(String reqId);

    /**
     * 根据申请id变更支付状态为废弃
     *
     * @param reqId
     * @return
     */
    int updateAccNoStateByReqId(@Param("reqId") String reqId, @Param("accNoState") String accNoState);

    /**
     * 根据reqId查询详情
     *
     * @param reqId
     * @return
     */
    RefPayInfo getInfoByReqId(String reqId);

    RefPayInfo selectReqPayInfo(String reqNo);

    /**
     * @return
     */
    List<RefPayInfo> selectReqPayInfoList(RefPayInfo refPayInfo);

    int updateaccNoState(@Param("id") String id, @Param("accNoState") String accNoState, @Param("state") String state, @Param("certDate") String certDate);

    List<RefPayInfo> selectRegionName(RefPayInfo refPayInfo);

    /**
     * @return
     */
    List<RefPayInfo> selectPayNo();

    /**
     * 通过记账表查询数据
     */
    List<String> selectPayInfoById(String id);

    /**
     * 查询记账和验证新建的数据
     *
     * @param id
     * @return
     */
    List<RefPayInfo> selectAllPayNo(@Param("id") String id, @Param("accNoState") String accNoState);

    /**
     * 查询refpayinfo
     *
     * @param id
     * @return
     */
    List<RefPayInfo> selectReq(String id);

    /**
     * 修改状态
     *
     * @param id
     * @param state
     * @param accNoState
     * @return
     */
    int updateState(@Param("id") String id, @Param("state") String state, @Param("accNoState") String accNoState, @Param("date") String date);

    /**
     * 根据payNo修改state和accnostate
     *
     * @param refPayInfo
     * @return
     */
    int updateByPayNo(RefPayInfo refPayInfo);

    RefPayInfo getInfoByPayNo(String payNo);

    /**
     * 根据id查询退款打印清册列表  批量退款用
     *
     * @param id
     * @return
     */
    List<RefPayInfo> getBatchRefundPrintList(String id);

    /**
     * 总计  批量退款用
     *
     * @param id
     * @return
     */
    RefPayInfo getBatchRefundPrintTotal(String id);

    /**
     * 打印头信息 批量退款用
     *
     * @param id
     * @return
     */
    RefPayInfo getBatchRefundPrintHead(String id);


    /**
     * 根据id查询支取凭证  资金退款用
     *
     * @param id
     * @return
     */
    RefPayInfo getNoCollectPrintVoucher(String id);

    /**
     * 汇总凭证打印
     *
     * @param id
     * @return
     */
    RefPayInfo getCollectPrintVoucher(String id);

    /**
     * 通过business查询payNo
     *
     * @param busiNo
     * @return
     */
    List<RefPayInfo> selectByNo(String busiNo);

    List<RefPayInfo> selectByReqId(String id);

    int selectByReqIdState(String id);

    int updatByReqId(String id);

    /**
     * 通过payNo查询
     *
     * @param payNo
     * @return
     */
    RefPayInfo selectByPayNo(String payNo);

    /**
     * 通过退款id查询数据
     *
     * @param id
     * @return
     */
    List<RefPayInfo> selectListByReqId(String id);
}
